From: robertl Date: Thu, 26 Aug 2010 18:57:31 +0000 (+0000) Subject: Support nautical miles in KML. X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~16^2~14 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a79732ef5e784ab073e9f79c2c2877406047f165;p=gpsbabel.git Support nautical miles in KML. --- diff --git a/defs.h b/defs.h index 34dde6374..dab33a81f 100644 --- a/defs.h +++ b/defs.h @@ -65,6 +65,8 @@ #define METERS_TO_FEET(meetsies) ((meetsies) * 3.2808399) #define NMILES_TO_METERS(a) ((a) * 1852.0) /* nautical miles */ +#define METERS_TO_NMILES(a) ((a) / 1852.0) + #define MILES_TO_METERS(a) ((a) * 1609.344) #define METERS_TO_MILES(a) ((a) / 1609.344) #define FATHOMS_TO_METERS(a) ((a) * 1.8288) @@ -1018,7 +1020,8 @@ unsigned long get_crc32_s(const void * data); typedef enum { units_unknown = 0, units_statute = 1, - units_metric =2 + units_metric = 2, + units_nautical =3 } fmt_units; int fmt_setunits(fmt_units); diff --git a/kml.c b/kml.c index 642499aca..60bffd98c 100644 --- a/kml.c +++ b/kml.c @@ -127,7 +127,7 @@ arglist_t kml_args[] = { "Indicate direction of travel in track icons (default = 0)", "0", ARGTYPE_BOOL, ARG_NOMINMAX }, {"units", &opt_units, - "Units used when writing comments ('s'tatute or 'm'etric)", + "Units used when writing comments ('s'tatute, 'm'etric,' 'n'autical)", "s", ARGTYPE_STRING, ARG_NOMINMAX }, {"labels", &opt_labels, "Display labels on track and routepoints (default = 1)", @@ -332,6 +332,7 @@ kml_wr_init(const char *fname) switch(u) { case 's': fmt_setunits(units_statute); break; case 'm': fmt_setunits(units_metric); break; + case 'n': fmt_setunits(units_nautical); break; default: fatal("Units argument '%s' should be 's' for statute units or 'm' for metric.", opt_units); break; } /* diff --git a/units.c b/units.c index d3a85bfed..d4679aba9 100644 --- a/units.c +++ b/units.c @@ -29,6 +29,7 @@ fmt_setunits(fmt_units u) switch (u) { case units_statute: case units_metric: + case units_nautical: units = u; return 0; default: @@ -51,6 +52,10 @@ fmt_distance(const double distance_meters, char **tag) *tag = "mi"; } break; + case units_nautical: + d = METERS_TO_NMILES(distance_meters); + *tag = "NM"; + break; case units_metric: d = distance_meters; if (d < 1000) { @@ -79,6 +84,10 @@ fmt_speed(const double distance_meters_sec, char **tag) d = METERS_TO_MILES(distance_meters_sec) * SECONDS_PER_HOUR ; *tag = "mph"; break; + case units_nautical: + d = METERS_TO_NMILES(distance_meters_sec) * SECONDS_PER_HOUR ; + *tag = "knts"; + break; case units_metric: d = distance_meters_sec * SECONDS_PER_HOUR; *tag = "meters/hour";